package alertmanager
import (
"encoding/json"
"github.com/K-Phoen/sdk"
)
type Option func (manager *Manager )
type Manager struct {
builder *sdk .AlertManager
}
func New (opts ...Option ) *Manager {
manager := &Manager {
builder : &sdk .AlertManager {},
}
for _ , opt := range opts {
opt (manager )
}
return manager
}
func ContactPoints (contactPoints ...Contact ) Option {
return func (manager *Manager ) {
config := &manager .builder .Config
config .Receivers = nil
for i , point := range contactPoints {
config .Receivers = append (config .Receivers , *point .Builder )
if i == 0 && config .Route .Receiver == "" {
config .Route .Receiver = point .Builder .Name
}
}
}
}
func DefaultContactPoint (contactPoint string ) Option {
return func (manager *Manager ) {
manager .builder .Config .Route .Receiver = contactPoint
}
}
func DefaultGroupBys (labels ...string ) Option {
return func (manager *Manager ) {
manager .builder .Config .Route .GroupBy = labels
}
}
func Templates (templates map [string ]string ) Option {
return func (manager *Manager ) {
manager .builder .TemplateFiles = templates
}
}
func Routing (policies ...RoutingPolicy ) Option {
return func (manager *Manager ) {
config := &manager .builder .Config
config .Route .Routes = nil
for _ , policy := range policies {
config .Route .Routes = append (config .Route .Routes , *policy .builder )
}
}
}
func (manager *Manager ) MarshalJSON () ([]byte , error ) {
return json .Marshal (manager .builder )
}
func (manager *Manager ) MarshalIndentJSON () ([]byte , error ) {
return json .MarshalIndent (manager .builder , "" , " " )
}
The pages are generated with Golds v0.8.2 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .